const express = require('express')
const app = express()
const port = 3000

// 安装body-parser模块：用于接受并处理post方式传过来的参数
// 引入body-parser
let bodyParser=require("body-parser");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:false}));

// 引入mysql
var mysql = require('mysql')
// 创建一个链接
var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'root',
    database: 'vue3ts'
})
// 1.安装token相关插件

// 2.引入生成token模块
let jwt=require("jsonwebtoken");
// 3.自定义密钥
let secret="xyz";

// 4.引入验证token文件
let jwtAuth=require("./jwtAuth");
app.use(jwtAuth);



// 设置允许跨域访问该服务
// app.all('*', function (req, res, next) {
//     res.header("Access-Control-Allow-Origin", "*");
//     res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
//     res.header("Access-Control-Allow-Headers", "X-Requested-With");
//     res.header('Access-Control-Allow-Headers', 'Content-Type');
//     res.header('Access-Control-Allow-Headers', 'mytoken');
//     next();
// });

//   登录接口
app.post('/user/login', (req, res) => {
    console.log(req.query); //获取传过来的参数
    // 创建一个sql语句
    let sql = `SELECT * FROM users WHERE username="${req.query.username}" AND password="${req.query.password}"`;
    console.log(sql);
    connection.query(sql, (err, result) => {
        if (err) {
            console.log(err);
        } else {
            // 找到用户
            if (result.length >= 1) {
                // 生成token
                let token=jwt.sign(req.query,secret,{
                    expiresIn:60*60
                })
                // 返回前端的数据
                res.send({
                    code: 200,
                    data: result,
                    token
                });
            } else { //没有找到该用户
                res.send({
                    code: 400,
                    data: {}
                });

            }

        }

    })
});

// 所有用户接口
app.post('/user/list', (req, res) => {
    // 创建一个sql语句
    let sql = `SELECT * FROM users`;
    connection.query(sql, (err, result) => {
        if (err) {
            console.log(err);
        } else {
            // 返回前端的数据
            res.send({
                code: 200,
                data: result
            });
        }

    })
});


// 查询表格总数接口
app.get('/allNumber', (req, res) => {
    // 创建一个sql语句
    let sql = `SELECT COUNT(*) FROM ${req.query.excelName}`;
    connection.query(sql, (err, result) => {
        if (err) {
            console.log(err);
        } else {
            // 返回前端的数据
            res.send({
                code: 200,
                data: result
            });
        }

    })
});

// 分页接口
app.get('/page', (req, res) => {
    // 创建一个sql语句
    let sql = `SELECT * FROM ${req.query.excelName} LIMIT ${req.query.startIndex},${req.query.pageSize}`;
    connection.query(sql, (err, result) => {
        if (err) {
            console.log(err);
        } else {
            // 返回前端的数据
            res.send({
                code: 200,
                data: result
            });
        }

    })
});

// 修改用户数据接口
app.get('/user/update', (req, res) => {
    // 创建一个sql语句
    let sql = `update users set username = "${req.query.username}",role="${req.query.role}" where id = ${req.query.id}`;
    connection.query(sql, (err, result) => {
        if (err) {
            console.log(err);
        } else {
            // 返回前端的数据
            res.send({
                code: 200,
                data: result
            });
        }

    })
});

// 上传文本
app.post('/article/update', (req, res) => {
    // 
    console.log("参数：",req.body);
    // 创建一个sql语句
    let sql = `INSERT INTO article (author,title,content) VALUES ('${req.body.author}','${req.body.title}','${req.body.content}')`;
    connection.query(sql, (err, result) => {
        if (err) {
            console.log(err);
        } else {
            // 返回前端的数据
            res.send({
                code: 200,
                data: result
            });
        }

    })
});

app.listen(port, () => {
    console.log(`Example app listening on port ${port}`)
})